package org.jeecg.modules.acmd.cmd;

/**
 * 功能描述
 *
 * @author: scott
 * @date: 2022年08月29日 20:38
 */
public class AdbCommand {
    public static void main(String[] args) {
//        命令	adb version
//        含义	显示 adb 版本
//        操作
//        命令	adb help
//        含义	帮助信息，查看 adb 所支持的所有命令
//                操作
//        命令	adb start-server
//        含义	启动 adb 服务
//        操作
//        命令	adb kill-server
//        含义	关闭 adb 服务
//        操作
//        命令	adb devices
//        含义	用来查看当前连接的设备，已连接的设备会显示出来
//                操作
//        命令	adb connect 设备号
//        含义	用来连接设备
//        操作
//        2权限指令
//
//        命令	adb root
//        含义	获取 Android 管理员（root 用户）的权限
//                操作
//        命令	adb shell
//        含义	登录设备-shell，这个命令将登录设备的 shell(内核)，登录 shell 后可以使用 cd、ls、rm 等 Linux 命令
//        操作
//        命令	adb remount
//        含义	获取 System 分区可写权限，需要 root 后才能有这个权限
//                操作
//        3apk 操作指令
//
//        命令	adb shell pm list packages
//        含义	显示所有包名
//        操作
//        命令	adb shell pm list packages –s
//        含义	显示系统应用包名
//        操作
//        命令	adb shell pm list packages -3
//        含义	显示第三方应用包名
//        操作
//        命令	adb install <apk 文件路径 >
//        含义	将本地 apk 软件安装到设备上
//        操作
//        命令	adb uninstall <apk 包名 >
//        含义	将设备上的 apk 卸载
//        操作
//        4文件操作指令
//
//        命令	adb push < 本地路径 > < 手机端路径 >
//                含义	把本地的文件或文件夹复制到设备（手机）
//                含义	把本地的文件或文件夹复制到设备（手机）
//        操作
//        命令	adb pull < 手机端文件 > < 本地路径 >
//                含义	把设备（手机）的文件或文件夹复制到本地
//                操作
//        5日志操作指令
//
//        命令	adb logcat -v time > D:\logs\logcat.log
//        含义	输出实时日志并保存在本地文件，通过 Ctrl+C 来停止。抓取日志的步骤：先输入命令启动日志，然后操作 App，复现 bug，再 ctrl+c 停止日志，分析本地保存的文件
//                操作
//        命令	adb bugreport >D:\logs\ bugreport.log
//        含义	输入指令后开始抓取 Log，不需要按 Ctrl+C 来停止，会自动化停止 Log 打印，并将日志文件保存在本地。抓取日志的步骤：主要抓取执行命令时往前 10 分钟左右的日志信息，所以在出现 bug 后立即采用此方法才有效，问题出现时间太长不建议使用此方法
//                操作
//        6系统操作指令
//
//        命令	adb shell getprop ro.product.model
//        含义	获取设备型号
//        操作
//        命令	adb shell getprop ro.build.version.release
//        含义	获取设备 Android 系统版本
//        操作
//        命令	adb get-serialno
//        含义	获取设备的序列号（设备号）
//        操作
//        命令	adb shell wm size
//        含义	获取设备屏幕分辨率
//        操作
//        命令	adb shell screencap -p /sdcard/mms.png
//        含义	屏幕截图
//        操作
//        命令	adb pull /sdcard/mms.png D:\app
//        含义	将截图导出到本地

//        adb shell dumpsys activity |find "mFocusedActivity"
//    查看前台应用包名，适用于 Android 7.0 以下，必须先启动 app
//
//        adb shell dumpsys activity |find "mResumedActivity"
//    查看前台应用包名，适用于 Android 8.0 以上，必须先启动 app
//
//        a. adb install apk路径
//        b. adb install -r ：覆盖原来安装的软件，并保留数据
//        c. adb install-multiple demo1.apk demo2.apk
//        d. adb install -t demo1.apk : 如果在安装中，遇到Failure [INSTALL_FAILED_TEST_ONLY installPackageLI]，则使用该命令
//        e. adb install -d demo.apk :允许版本代码升级
//        f. adb install -g demo.apk :授权所有运行时权限
//
//        adb unstall demo.apk
//        卸载设备中的应用，并希望保留配置和缓存文件
//        adb -s 序列号 shell pm uninstall -k 包名
//
//        adb logcat >/Users/xxxx/demo.log
//        或者
//        adb -s 序列号 logcat >/Users/xxxx/demo.log
//
//        Android系统是基于Linux系统开发的，支持常见的Linux命令，这些命令都保存在手机“/system/bin”文件中，如下图所示
//
//        adb shell ls
//                或者分开使用
//～～adb shell
//～～ls
//        注意：使用exit退出提示符
//        如果在操作过程中出现没有权限的问题，则需要切换root用户
//        su root
//
//        adb shell dumpsys wifi
//        由于该指令输出的信息很多，所以在此加入参数，当输出信息在显示满一页的时候就暂停输出
//        如果想再继续输出，则需要按空格键继续显示下页内容。按“Q”停止显示后续输出信息。
//        adb shell dumpsys wifi ｜ more
//
//        adb shell top
//        adb shell top | grep "包名" —— 查看某个包的一些性能
//        adb shell top -d 1 |grep "包名"

//获取IP地址
//        adb shell netstat
//
//        D:\adb\scrcpy-win64-v1.18>adb shell ifconfig wlan0
//        wlan0     Link encap:UNSPEC    Driver icnss
//        inet addr:192.168.3.118  Bcast:192.168.3.255  Mask:255.255.255.0
//        inet6 addr: fe80::60b2:2dff:fe1f:e2a0/64 Scope: Link
//        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
//        RX packets:11679997 errors:0 dropped:0 overruns:0 frame:0
//        TX packets:5623136 errors:0 dropped:1 overruns:0 carrier:0
//        collisions:0 txqueuelen:3000
//        RX bytes:12438042365 TX bytes:617302763

//        D:\adb\scrcpy-win64-v1.18>adb shell ifconfig wlan0 |findstr addr
//        inet addr:192.168.3.118  Bcast:192.168.3.255  Mask:255.255.255.0
//        inet6 addr: fe80::60b2:2dff:fe1f:e2a0/64 Scope: Link

//        D:\adb\scrcpy-win64-v1.18>adb tcpip 5555
//
//        D:\adb\scrcpy-win64-v1.18>adb connect 192.168.3.118:5555
//        connected to 192.168.3.118:5555
//
//        D:\adb\scrcpy-win64-v1.18>adb devices
//        List of devices attached
//        R28M42XEYNT     device
//        192.168.3.118:5555      device
//
//
//        D:\adb\scrcpy-win64-v1.18>adb devices
    }
}
